package com.多线程.ThreadSafe;

/**
 * 1.定义一个账户类，创建一个账户对象（表示小明和小红的共同账号）
 */

public class Account {
    private String id;
    private int money;

    public Account() {
    }

    public Account( int money) {
        this.money = money;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    public void drawMoney(int money) {
        //获取线程名来判断是谁来取钱了
        String name=Thread.currentThread().getName();
        //使用进程同步代码块解决线程安全问题
        //锁应该使用共享资源，使用唯一的对象资源，其实不好，它会使得其他线程的用户也不能访问这个资源
        //这里应该使用账户作为锁
        synchronized (this) {
            if (this.money>=money){
                System.out.println(name+"来取了"+money+"钱");
                this.money-=money;
                System.out.println("账户余额："+this.money);
            }else{
                System.out.println("账户没有那么多钱");
            }
        }


    }
}
